A microservices architecture involves the design of an application as a suite of independently deployable, small, modular services, which are typically referred to as “microservices.” Each microservice executes a unique process and communicates through a well-defined, lightweight mechanism to serve a business goal using communication protocols. The microservices architecture has become a preferred way developing software systems, particularly those that operate in cloud-based environments.
Microservices may be deployed on a wide variety of cloud environments provided by different service providers. The service providers provide microservice runtime environments (MREs), which are runtime environments that execute deployed microservices. A service provider may offer different types of MREs that are configured to support various types of microservices. For example, a service provider may provide a database MRE that is data intensive, and an application MRE that is processing intensive. In turn, the service provider executes an application's microservices using MRE types corresponding to the microservices' requirements.
Some terminology will now be defined. As used herein, the term “microservice” refers to any software construct that: (i) is completely embodied in the code of a software program (as opposed to being code that is called by the software program from code that is not included in the software program itself; and (ii) is architecturally similar in its structure and context to a traditional service (may sometimes herein be referred to as a “macroservice”) used in SOA (service oriented architecture). While microservices are typically smaller than macroservices, there is not a determinative size limitation on the size of a “microservice.”